package study.JavaBase;

/**
 * date:2025.10.16
 * title:抽象类
 * author:fzy
 */
//猫和狗继承动物，但是动物是一个抽象概念，现实生活中他是没有实体的。所以他应该是一个抽象类
//一些注意的点**
//抽象类不可以被实例，但是类的其他功能依然存在，但是抽象类可以用多态的方式实例
//抽象类必须被继承才能被使用
//一个类只能继承一个抽象类，但是一个抽象类可以实现多个接口
//抽象类可以包括非抽象方法，但是抽象方法只能出现在抽象类中
//构造方法不能抽象--废话你构造方法都抽象化了我还怎么构造你这个实例
//任何子类都必须重写父类方法
//静态方法也不能抽象化
public class Java_20 {
    public static void main(String[] arg) {
        Vergil v = new Vergil("v", "2000");
        v.Jump();
        v.eat();
        v.sleep();
    }
}

abstract class Dante {
    String name;
    String age;

    public Dante(String name, String age) {
        this.name = name;
        this.age = age;
    }

    abstract void Jump();

    abstract void eat();

    void sleep() {
        System.out.println("I am sleeping");
    }
}

class Vergil extends Dante {
    Vergil(String name, String age) {
        super(name, age);
    }

    @Override
    void sleep() {
        super.sleep();
        System.out.println("I am sleeping too!!!");
    }

    @Override
    void Jump() {
        System.out.println("I can jumping!!!");
    }

    @Override
    void eat() {
        System.out.println("I am eating!!!");
    }
}

